package com.data.security;

import java.io.File;
import java.util.ArrayList;

import com.data.security.R;
import com.data.security.modelo.AdaptadorExplorador;
import com.data.security.modelo.Archivo;

import android.app.Activity;
import android.app.AlertDialog;
import android.content.Intent;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ListView;
import android.widget.TextView;

public abstract class ExploradorFragment extends Fragment implements OnItemClickListener {

	private ArrayList<Archivo> item;
	private ArrayList<String> path;
	private ListView lista;
	private String ruta;
	private AdaptadorExplorador fileList;
	private TextView empty;
	private String root;
	
	
	
	public ExploradorFragment(String raiz){
		root=raiz;
	}



	@Override
	public View onCreateView(LayoutInflater inflater, ViewGroup container,
			Bundle savedInstanceState) {
		View vista=inflater.inflate(R.layout.fragment_explorador, container, false);
		lista = (ListView)vista.findViewById(R.id.explorador);
		empty = (TextView)vista.findViewById(android.R.id.empty);
		empty.setVisibility(View.INVISIBLE);
		lista.setOnItemClickListener(this);
		item = new ArrayList<Archivo>();
		path = new ArrayList<String>();
		fileList = new AdaptadorExplorador(item,getActivity().getApplicationContext());
		lista.setAdapter(fileList);
		getDir(root);
		
		return vista;
		
	}

	private void getDir(String dirPath) {
       
		item.clear();
		path.clear();

		File f = new File(dirPath);
		File[] files = f.listFiles();
		if (files==null){
			files=new File[0];
		}

		if (!dirPath.equals(root)) {
			Archivo raiz=new Archivo();
			raiz.setTitulo("inicio/");
			Archivo back=new Archivo();
			back.setTitulo("../");
			item.add(raiz);
			path.add(root);
			item.add(back);
			path.add(f.getParent());
		}

		if (files.length == 0) {
			empty.setVisibility(View.VISIBLE);
		}

		for (int i = 0; i < files.length; i++) {
			Archivo archivo=new Archivo();
			empty.setVisibility(View.INVISIBLE);
			File file = files[i];
			path.add(file.getPath());
			if (file.isDirectory() && file.canRead()){
				archivo.setTitulo(file.getName() + "/");
				item.add(archivo);
			}else{
				archivo.setRuta(file.getAbsolutePath());
			    archivo.setTitulo(file.getName());
			    archivo.setTipo(Archivo.extraerExtension(file.getAbsolutePath()));
				item.add(archivo);
			}
		}

		fileList.notifyDataSetChanged();

	}

	@Override
	public void onItemClick(AdapterView<?> parent, View view, int position,
			long id) {

		File file = new File(path.get(position));
		if (file.isDirectory()) {
			if (file.canRead()) {
				getDir(path.get(position));
			} else {
				new AlertDialog.Builder(getActivity())
						.setTitle(
								"[" + file.getName() + "] "
										+ getString(R.string.nolectura))
						.setPositiveButton("OK", null).show();
			}
		} else {
			ruta = file.getAbsolutePath();
			
			Intent data = new Intent();
			data.putExtra("archivo_seleccionado", ruta);
			getActivity().setResult(Activity.RESULT_OK, data);
			getActivity().finish();
		}

	}

}
